/**
 * 跳转管理
 */
 import { useRouter } from 'vue-router';

 const transfer = {
     /**
      * 注册路由，建议在App.vue的setup中去注册下
      */
     registerRouter() {
         this.router = useRouter();
     },
     
     pageBack(){
         this.router.back();
     },
     /**
      * 页面跳转，所有的跳转，都通过此方法包括路由跳转
      * @param {string | object} options
      * options 实例1，路由对象:
      * ```
      * {
      *      name: 'routeName',
      *      params: {
      *          type: 1
      *      },
      *      query: {
      *          passtype: 1
      *      },
      *      method: 'replace' // 默认 'push', 可不传
      * }
      * ```
      * options 实例2，不同域名 : `'http://www.3ren.cn/xxxx'`
      * 
      * options 实例3，同域名 : `'/xxx/xxx';`
      * @param {boolean} isBlank 是否新页面打开。true 需要，false不需要
      * @param {boolean} needLogin 是否需要登录。true 需要，false不需要
      */
     pageJump(options, isBlank = false, needLogin = true) {
         let router = this.router;
         if(!router) {
             throw new Error('in "pageJump" function the router is undefined');
         }
         let type = typeof options;
         let url = '';
         if (isBlank) {
             if (type === 'object') {
                 try {
                     url = router.resolve(options).href;
                 } catch (err) {
                     console.error(options, ' 路由无效, 错误为：', err);
                 }
             } else if (type === 'string') {
                 url = options;
             }
             if (url && url !== '/') {
                 window.open(url, isBlank ? '_blank' : '_self');
             }
         } else {
             if (type === 'object') {
                router[options.method || 'push'](options);
             } else {
                window.location.href = options;
             }
         }
     }
 };
 
 let { pageJump, pageBack } = transfer;
 pageJump = pageJump.bind(transfer);
 pageBack = pageBack.bind(transfer);
 export { 
     pageJump,
     pageBack
 };
 
 export default transfer;
